package com.kgame5.xtank3d.helper {
import kgame5.enginex.EntityVO;
import kgame5.kutil.T;

import com.kgame5.xtank3d.GameEnum;
import com.kgame5.xtank3d.vo.BlockVO;
import com.kgame5.xtank3d.vo.GroundVO;
import com.kgame5.xtank3d.vo.MapVO;
import com.kgame5.xtank3d.vo.level.BornPosiVO;

/**
 * @author kk
 */
public class MapXMLReader {
	//从XML来取得地图数据
	public static function CreateFromXML(xx:XML):MapVO{
		T.p("CreateFromXML");
		//T.p(xx);
		
		var x:int;
		var y:int;
		var z:int;
		var A:int;
		var B:int;
		var H:int;
		var rotY:int;
		
		var vo:MapVO=new MapVO();
	
		vo.id=parseInt(xx.@id);
		
		vo.name=xx.@name;
		vo.detail=xx.detail;
		
		//-地面信息
		var groundVO:GroundVO=new GroundVO();
		groundVO.id=EntityVO.GetNextFreeID();
		groundVO.cateID=GameEnum.CATEID_GROUND;
		groundVO.typeID=vo.id;//地面的id和mapID相同
		groundVO.Width = parseInt(xx.width);
		groundVO.Height=parseInt(xx.height);
		groundVO.CC =parseInt(xx.cc);
		groundVO.RC =parseInt(xx.rc);
		groundVO.CellSize=64;
		
		//groundVO._pathVO=PathManager.ground(groundVO.typeID);
		
		vo.groundVO=groundVO;
		
		//-提取障碍物信息
		for each(var barXML:XML in xx.bar_list.bar){
			
			var barVO:BlockVO=new BlockVO();//type,hp,x,y,A,B,rot
			barVO.id=EntityVO.GetNextFreeID();//parseInt(barXML.@id);
			barVO.cateID=GameEnum.CATEID_BLOCK;
			barVO.typeID = parseInt(barXML.@type);
			barVO.hp=parseInt(barXML.@HP);
			
			
			x=parseInt(barXML.@x);
			y=parseInt(barXML.@y);
			z=parseInt(barXML.@z);
			rotY=parseInt(barXML.@rot_y);
			
			A=parseInt(barXML.@A);
			B=parseInt(barXML.@B);
			H=parseInt(barXML.@H);
			
			barVO.hardVO.v3d_p.x=x;
			barVO.hardVO.v3d_p.y=y;
			barVO.hardVO.v3d_p.z=z;
			barVO.hardVO.aabb.A=A;
			barVO.hardVO.aabb.B=B;
			barVO.hardVO.aabb.H=H;
			
			barVO.hardVO.v3d_r.y=rotY;
			//barVO._pathVO=PathManager.block(barVO.typeID);//资源地址
			
			//--保持引用
			vo.dict_barVO[barVO.id]=barVO;
		}
		
		//-敌人位置
		for each(var posiXML:XML in xx.team_blue_list.posi){
			
			var posiVO:BornPosiVO=new BornPosiVO();
			//posiVO.id=parseInt(posiXML.@id);
		
			posiVO.x=parseInt(posiXML.@x);
			//posiVO.y=parseInt(barXML.@y);
			posiVO.z=parseInt(posiXML.@z);
			posiVO.rotY=parseInt(posiXML.@rot_y);
			
			vo.arrTeamBPosi.push(posiVO);
			//vo.dict_teamBPosi[posiVO.id]=posiVO;
		}
		
		//-自己坦克的位置
		for each(var posiXML:XML in xx.team_red_list.posi){
			
			var posiVO:BornPosiVO=new BornPosiVO();
			//posiVO.id=parseInt(posiXML.@id);
		
			posiVO.x=parseInt(posiXML.@x);
			//posiVO.y=parseInt(barXML.@y);
			posiVO.z=parseInt(posiXML.@z);
			posiVO.rotY=parseInt(posiXML.@rot_y);
			
			vo.teamAPosi=posiVO;
			break;
		}
		
		//-道具出现的位置
		for each(var posiXML:XML in xx.flower_list.posi){
			
			var posiVO:BornPosiVO=new BornPosiVO();
			//posiVO.id=parseInt(posiXML.@id);
		
			posiVO.x=parseInt(posiXML.@x);
			//posiVO.y=parseInt(barXML.@y);
			posiVO.z=parseInt(posiXML.@z);
			//posiVO.rotY=parseInt(posiXML.@rot_y);
			
			vo.arrItemPosi.push(posiVO);
		}
		
		return vo;
	}
}//end of class
}
